package com.huo.common;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * <p>Title: 字符串工具类</p>
 * <p>Description: 对字符串编码转换，常用处理等操作</p>
 * @author Huoyan
 * @version 1.0
 * <p>Company: </p>
 * <p>Copyright 2011</p>
 */
public class StringUtil {
	
	/**
	 * 将字符串编码转为指定类型，适用于以GET方式发送请求时，将中文乱码转换为正确编码
	 * 默认以ISO-8859-1的编码获得参数s的字节数组
	 * @param s 待转换的字符串
	 * @param encoding 得到按此编码的字符串
	 * @return 转换完成的字符串
	 */
	public static String convertStringCode(String s,String encoding){
		String restr = null;
		try {
			byte[] b = s.getBytes("ISO-8859-1");
			restr = new String(b, encoding);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("a:"+restr);
		return restr;
	}
	
	/**
	 * 适用于使用request对象从请求中获取数据时,将Null转换为String
	 * @param s
	 * @return 字符串空: ""
	 */
	public static String setBlank(String s){
		String tmp = s;
		if(tmp==null){
			tmp = "";
		}
		return tmp;
	}
	
	/**
	 * 对于空格和回车的HTML编码转换
	 * @param s
	 * @return 转换后的HTML字符串
	 */
	public static String toHTMLCoding(String s) {
		String tempStr = "";
		tempStr = s.replaceAll("\n", "<br>");
		tempStr = tempStr.replaceAll(" ", "&nbsp;");
		return tempStr;
	}
	
	/**
	 * 判断空
	 * @param s
	 * @return
	 */
	public static boolean isBlank(String s){
		boolean b = false;
		if(s == null || "".equals(s)){
			b = true;
		}
		return b;
	}
	
	/**
	 * 判断字符串是否不为空或者不为空字符
	 * 
	 * @param str
	 *            允许为NULL
	 * @return
	 */
	public static boolean isBlank(Object o) {
		if (null == o) {
			return false;
		} else {
			String str = o.toString();
			if ("".equals(str.trim())) {
				return false;
			} else {
				return true;
			}
		}
	}
	
	/**
	 * 根据传入的正则 获取指定字符串的值
	 * @param expression 正则表达式
	 * @param content 在content中查找
	 * @return
	 */
	public static String findPattern(String expression, String content){
		String s = null;
		Pattern p = Pattern.compile(expression);
		Matcher m = p.matcher(content);
		if (m.find()) {
			s = m.group(1);
		}
		return s;
	}
	
	/**
	 * 判断字符串是否存在
	 * @param s 所要判断的字符串
	 * @param content 在content查找
	 * @return
	 */
	public static boolean exist(String s, String content){
		Pattern p = Pattern.compile(s);
		Matcher m = p.matcher(content);
		if (m.find()) {
			return true;
		} else {
			return false;
		}
	}

}
